/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package umlapp.swingui;

import java.awt.Graphics;
import java.util.Iterator;
import umlapp.Content;
import umlapp.elements.AElement;

/**
 *
 * Hlavne editačné okno, v ktorom sa vytvárajú diagramy. Tu prebieha celé vykresľovanie diagramov.
 *
 * @author Peter Chovanec
 * @author Mario Jaros
 */
public class EditorPanel extends javax.swing.JPanel {

    /**
     * Obsah daného diagramu zložený z elementov a vzťahov medzi nimi.
     */
    private Content content;

    /**
     * Konštruktor triedy
     */
    public EditorPanel() {
        content = new Content();
        initComponents();
    }

    /**
     * Nastavenie listu elements
     *
     * @param elements inštancia, ktorá sa priradí do content
     */
    public void setContent(Content elements) {
        this.content = elements;
    }

    /**
     *
     * @return vracia list content
     */
    public Content getContent() {
        return content;
    }

    /**
     * restuje list content
     */
    public void resetContent() {
        content = new Content();
    }

    /**
     * Vracia element na základe pozície
     *
     * @param x x-ová súradnica
     * @param y y=ová súradnica
     * @return
     */
    public AElement getDrawableElement(int x, int y) {
        return content.getElement(x, y);
    }

    /**
     * pridanie elementu do obsahu content
     *
     * @param element element, ktorý sa ma priradiť
     * @return true ak bola operácia úspešna v opačnom prípade false
     */
    public boolean addDrawableElement(AElement element) {
        return content.addElement(element);
    }

    /**
     * vymazanie elementu z obsahu content
     *
     * @param element elemnent, ktorý sa ma vymazať
     * @return true ak bola operácia úspešna v opačnom prípade false
     */
    public boolean removeDrawableElement(AElement element) {
        return content.removeElement(element);
    }

    /**
     * Prepísana metóda, ktorá ma na starosti vykreslenie komponentu Prechádza celým listom content
     * a jednotlivé elementy vykresľuje
     */
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (Iterator<AElement> it = content.iterator(); it.hasNext();) {
            it.next().drawElement(g);
        }
    }

    /**
     * This method is called from within the constructor to initialize the form. WARNING: Do NOT
     * modify this code. The content of this method is always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        setBackground(new java.awt.Color(255, 255, 255));
        setLayout(null);
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables
}
